package tech.aistar.day05.pri_property;

/**
 * 本类用来演示: 商品的实体类
 *
 * @author: success
 * @date: 2021/3/12 9:27 上午
 */
public class Product {

    //属性/方法 -> 类的成员

    //定义属性
    //修饰符 数据类型 属性名 [= 初始值];

    //id属性比较特殊,推荐项目中所有的实体类给一个id
    //并且后面学习了equals和hashcode方法之后,id - 对象的唯一标志 - 唯一性
    private int id;//如果没有设置初始值,系统会分配默认值

    //定义商品的名称
    private String name;

    //定义商品的价格
    private double price;

    //商品的年份
    private String[] labels;

    //考虑对象与对象之间的关系
    //假设一个商品只能对应一个商品类型

    //数据类型可以是自定义的对象类型
    private ProductType productType;

    //提供getter和setter方法
    public int getId(){
        return id;
    }

    public void setId(int id){
        //this代表当前对象,用来区分成员属性和方法参数中的id
        //当前对象 - 调用该方法的对象

        //所有的非静态属性是属于对象的.
        this.id = id;
        System.out.println(this);
    }

    public String getName(){
        return name;
    }

    public void setName(String name) {
        //setter方法可以进行参数有效性设置
        if("习大大".equals(name)){
            this.name = "***";
            return;
        }
        this.name = name;
    }

    //练习 - 把剩余的属性的getter/setter添加完毕


    public String[] getLabels() {
        return labels;
    }

    public void setLabels(String[] labels) {
        this.labels = labels;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getPrice() {
        return price;
    }

    public void setProductType(ProductType productType) {
        this.productType = productType;
    }

    public ProductType getProductType() {
        return productType;
    }
}
